#ifndef _TP1107_BOARD_H_
#define _TP1107_BOARD_H_

#include <stdio.h>
#include <string.h>
#include <config.h>
#include <stdlib.h>
#include <stdbool.h>

#if (_NETWOK_MODLE_TYPE_ == _TP1107_MODULE_) && (_NETWOK_FUNCTION_ENABLE_)

// 最小发射功率
#define TP1107_MIX_EMISSION_POWER           (-20l)
// 最大发射功率
#define TP1107_MAX_EMISSION_POWER           (20l)

// 最小入网超时时间
#define TP1107_MIX_NETWORK_TIMEOUT          (7ul)
// 最大入网超时时间
#define TP1107_MAX_NETWORK_TIMEOUT          (30ul)

// 最小频点
#define TP1107_MIX_FREQUENCY_RANGE          (0ul)
// 最大频点
#define TP1107_MAX_FREQUENCY_RANGE          (194ul)

// 最小发送超时时间
#define TP1107_MIX_SEND_TIMEOUT             (6ul)
// 最大发送超时时间
#define TP1107_MAX_SEND_TIMEOUT             (72ul)

// 最小入网信号强度
#define TP1107_MIX_NETWORK_SIGNAL_STRENGTH  (50ul)
// 最大入网信号强度
#define TP1107_MAX_NETWORK_SIGNAL_STRENGTH  (100ul)

/**
 * @brief 16进制转16进制字符串
 *
 * @param pHex      - 16进制数组
 * @param pString   - 转换后得16进制字符串
 * @param SizeOfHex - 16进制数组长度
 */
extern void Tp1107HexToHexString(uint8_t *pHex, char *pString, uint16_t SizeOfHex);

/**
 * @brief 获取无线模组发射功率
 * 
 * @param pEmissionPowerOut - 发射功率
 * @return bool             - 获取状态（true-成功，false-失败）
 * @note 获取成功固定发射功率，否则自适应发射功率
 */
extern bool Tp1107GetEmissionPower(int *pEmissionPowerOut);

/**
 * @brief 获取无线模组入网超时时间
 * 
 * @param pSearchTimeoutOut - 入网超时时间
 * @return bool             - 获取状态（true-成功，false-失败）
 */
extern bool Tp1107GetSearchNetworkTimeout(uint8_t *pSearchTimeoutOut);

/**
 * @brief 获取无线模组频点
 * 
 * @param pFrequencyRangeOut - 频点
 * @return bool              - 获取状态（true-成功，false-失败）
 * @note 获取成功则定频，获取失败则自适应频点
 */
extern bool Tp1107GetFrequencyRange(uint8_t *pFrequencyRangeOut);

#endif
#endif
